package 剑指offer;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

import org.junit.Test;

public class _61扑克牌中的顺子 {
	@Test
	public void test() {
		Set<Integer> set = new HashSet<Integer>();
		set.add(1);
	
	}
	/**
	 * 
	 *@time 2021年3月25日下午9:16:05
	 * 
	 *@param nums
	 *@return boolean
	 *
	 *@see
	 *当数组中不出现重复的数字时且满足max - min<数组长度
	 *时就判断其为顺子
	 *方法一可以先对其排序然后就，然后找到第一个非0数，并且判断其中不包含重复的数
	 */
    public boolean isStraight(int[] nums) {
    	int zero = 0;
    	Arrays.sort(nums);
    	for (int i = 0; i < 4; i++) {//因为这里限制nums的长度为5
			if(nums[i] == 0)zero++;
			else if (nums[i]==nums[i+1]) return false;							
		}  	
		return nums[4]-nums[zero] < 5;

    }
    /**
     * 
     *@time 2021年3月25日下午9:24:19
     * 
     *@param nums
     *@return boolean
     *
     *@see 方法二 Set去重 
     */
    public boolean isStraight1(int[] nums) {
		Set<Integer> repeat = new HashSet<Integer>();
		int min = 14,max = 0;
    	for (int i : nums) {
			if(i == 0) continue;
			if(repeat.add(i)) {
				if(min > i) min = i;
				if(max < i) max = i;
			}
			else return false;
		}
    	
    	
    	return max - min <5;
    	
    }

}
